## packages
library(readr)
library(dplyr)
library(tidyr)
library(forcats)
library(purrr)
library(raster)
library(lubridate)
library(move)
library(amt)
library(broom)
library(here)
library(glue)
library(ctmm)
library(parallel)
## path to empirical data
dir_emp <- here("output", "empirical", "data_proc")
## path + folder for results
dir_res <- here("output", "empirical", "results")
if (!dir.exists(dir_res)) dir.create(dir_res, recursive = TRUE)The 4th Dimension in Animal Movement
Empirical Study: Movement Models
Preparation
Import Data
## Read landscapes (RasterStack)
env_vars <- terra::rast(paste0(dir_emp, "/env_vars_100m.tif"))
## Read locations for all wild boars and different resolutions
dat <-
read_rds(paste0(dir_emp, "/boars_resampled_3035.rds")) |>
dplyr::select(id, res, x, y, t = time) |>
group_by(id) |>
ungroup() |>
nest(data = c(x, y, t))
# RSF
if (!file.exists(paste0(dir_res, "/emp_rsf_est.rds"))) {
dat_rsf <- dat |> mutate(fits = map(data, ~ {
x <- .x |>
make_track(x, y, t) |>
random_points(n = nrow(.x) * 20) |>
extract_covariates(env_vars)
}))
dat_rsf <- dat_rsf |> mutate(est = map(fits, ~ {
m1 <- glm(case_ ~ dtw + imp + hab, family = binomial(), data = .x)
tidy(m1, conf.int = TRUE) |>
filter(term != "(Intercept)") |>
dplyr::select(term, estimate, low = conf.low, high = conf.high) |>
mutate(method = "rsf")
}))
write_rds(dat_rsf |> dplyr::select(id, res, fits), paste0(dir_res, "/emp_rsf_fits.rds"))
write_rds(dat_rsf |> dplyr::select(id, res, est), paste0(dir_res, "/emp_rsf_est.rds"))
}
## SSF
if (!file.exists(paste0(dir_res, "/emp_ssf_est.rds"))) {
dat_ssf <- dat |> mutate(fits = map(data, ~ {
x <- .x |>
make_track(x, y, t) |>
steps() |>
random_steps(n_control = 20) |>
extract_covariates(env_vars)
}))
dat_ssf <- dat_ssf |> mutate(est = map(fits, ~ {
m1 <- fit_clogit(.x, case_ ~ dtw + imp + hab + sl_ + log(sl_) + cos(ta_) + strata(step_id_))
tidy(m1$model, conf.int = TRUE) |>
dplyr::select(term, estimate, low = conf.low, high = conf.high) |>
mutate(method = "ssf")
}))
write_rds(dat_ssf |> dplyr::select(id, res, fits), paste0(dir_res, "/emp_ssf_fits.rds"))
write_rds(dat_ssf |> dplyr::select(id, res, est), paste0(dir_res, "/emp_ssf_est.rds"))
}
# wRSF
if (!file.exists(paste0(dir_res, "/wrsf/inst_", nrow(dat), ".rds"))) {
dat_wrsf <- dat |> mutate(
ctmm = mclapply(data, function(x) {
t1 <- x |>
make_track(x, y, t, crs = 3035) |>
amt::as_telemetry()
SVF <- variogram(t1)
GUESS <- ctmm.guess(t1, variogram = SVF, interactive = FALSE)
# Select the best model
FIT <- ctmm.select(t1, GUESS, trace = 0)
FIT
}, mc.cores = 5))
dat_wrsf <- dat_wrsf |> mutate(telemetry = map(data, ~ {
.x |>
make_track(x, y, t, crs = 3035) |>
amt::as_telemetry()
}))
dat_wrsf <- dat_wrsf |>
mutate(akde = map2(ctmm, telemetry, ~ akde(.y, .x, weights = TRUE)))
write_rds(dat_wrsf, paste0(dir_res, "/emp_wrsf_fits.rds"))
r.list <- as.list(env_vars)
r.list <- lapply(r.list, raster)
names(r.list) <- c("dist_water", "imperviousness", "habitat")
for (i in 1:nrow(dat_wrsf)) {
# print(i)
wRSF <- ctmm::rsf.fit(dat_wrsf$telemetry[[i]], UD = dat_wrsf$akde[[i]], R = r.list, error = 0.1)
r_wrsf <- summary(wRSF)$CI[1:length(r.list), , drop = FALSE]
r_wrsf <- r_wrsf |> as_tibble() |> mutate(term = rownames(r_wrsf)) |>
dplyr::select(term, estimate = est, low, high) |>
mutate(term = map_chr(strsplit(term, " "), 1), method = "wrsf")
dir.create(paste0(dir_res, "/emp_wrsf_est"))
write_rds(r_wrsf, paste0(dir_res, "/emp_wrsf_est/inst_", i, ".rds"))
}
}Session Info
devtools::session_info()─ Session info ───────────────────────────────────────────────────────────────
setting value
version R version 4.4.2 (2024-10-31)
os macOS Sequoia 15.4.1
system aarch64, darwin20
ui X11
language (EN)
collate en_US.UTF-8
ctype en_US.UTF-8
tz Europe/Berlin
date 2025-05-07
pandoc 3.2 @ /Applications/RStudio.app/Contents/Resources/app/quarto/bin/tools/aarch64/ (via rmarkdown)
─ Packages ───────────────────────────────────────────────────────────────────
package * version date (UTC) lib source
amt * 0.3.0.0 2024-06-20 [1] Github (jmsigner/amt@9d6cdc0)
backports 1.5.0 2024-05-23 [1] CRAN (R 4.4.0)
broom * 1.0.5 2023-06-09 [1] CRAN (R 4.4.0)
cachem 1.0.8 2023-05-01 [1] CRAN (R 4.4.0)
checkmate 2.3.1 2023-12-04 [1] CRAN (R 4.4.0)
class 7.3-22 2023-05-03 [1] CRAN (R 4.4.2)
classInt 0.4-10 2023-09-05 [1] CRAN (R 4.4.0)
cli 3.6.3 2024-06-21 [1] CRAN (R 4.4.0)
codetools 0.2-20 2024-03-31 [1] CRAN (R 4.4.2)
ctmm * 1.2.0 2023-09-23 [1] CRAN (R 4.4.0)
DBI 1.2.3 2024-06-02 [1] CRAN (R 4.4.0)
DEoptimR 1.1-3 2023-10-07 [1] CRAN (R 4.4.0)
devtools 2.4.5 2022-10-11 [1] CRAN (R 4.4.0)
digest 0.6.35 2024-03-11 [1] CRAN (R 4.4.0)
dplyr * 1.1.4 2023-11-17 [1] CRAN (R 4.4.0)
e1071 1.7-14 2023-12-06 [1] CRAN (R 4.4.0)
ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.4.0)
evaluate 0.23 2023-11-01 [1] CRAN (R 4.4.0)
expm 0.999-9 2024-01-11 [1] CRAN (R 4.4.0)
fansi 1.0.6 2023-12-08 [1] CRAN (R 4.4.0)
fastmap 1.1.1 2023-02-24 [1] CRAN (R 4.4.0)
forcats * 1.0.0 2023-01-29 [1] CRAN (R 4.4.0)
fs 1.6.4 2024-04-25 [1] CRAN (R 4.4.0)
generics 0.1.3 2022-07-05 [1] CRAN (R 4.4.0)
geosphere * 1.5-18 2022-11-15 [1] CRAN (R 4.4.0)
glue * 1.8.0 2024-09-30 [1] CRAN (R 4.4.1)
Gmedian 1.2.7 2022-06-08 [1] CRAN (R 4.4.0)
here * 1.0.1 2020-12-13 [1] CRAN (R 4.4.0)
hms 1.1.3 2023-03-21 [1] CRAN (R 4.4.0)
htmltools 0.5.8.1 2024-04-04 [1] CRAN (R 4.4.0)
htmlwidgets 1.6.4 2023-12-06 [1] CRAN (R 4.4.0)
httpuv 1.6.15 2024-03-26 [1] CRAN (R 4.4.0)
httr 1.4.7 2023-08-15 [1] CRAN (R 4.4.0)
jsonlite 1.8.8 2023-12-04 [1] CRAN (R 4.4.0)
KernSmooth 2.23-24 2024-05-17 [1] CRAN (R 4.4.2)
knitr 1.46 2024-04-06 [1] CRAN (R 4.4.0)
later 1.3.2 2023-12-06 [1] CRAN (R 4.4.0)
lattice 0.22-6 2024-03-20 [1] CRAN (R 4.4.2)
lifecycle 1.0.4 2023-11-07 [1] CRAN (R 4.4.0)
lubridate * 1.9.3 2023-09-27 [1] CRAN (R 4.4.0)
magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.4.0)
Matrix 1.7-1 2024-10-18 [1] CRAN (R 4.4.2)
memoise 2.0.1 2021-11-26 [1] CRAN (R 4.4.0)
mime 0.12 2021-09-28 [1] CRAN (R 4.4.0)
miniUI 0.1.1.1 2018-05-18 [1] CRAN (R 4.4.0)
move * 4.2.4 2023-07-06 [1] CRAN (R 4.4.0)
numDeriv 2016.8-1.1 2019-06-06 [1] CRAN (R 4.4.0)
pillar 1.9.0 2023-03-22 [1] CRAN (R 4.4.0)
pkgbuild 1.4.4 2024-03-17 [1] CRAN (R 4.4.0)
pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.4.0)
pkgload 1.3.4 2024-01-16 [1] CRAN (R 4.4.0)
profvis 0.3.8 2023-05-02 [1] CRAN (R 4.4.0)
promises 1.3.0 2024-04-05 [1] CRAN (R 4.4.0)
proxy 0.4-27 2022-06-09 [1] CRAN (R 4.4.0)
purrr * 1.0.2 2023-08-10 [1] CRAN (R 4.4.0)
R6 2.5.1 2021-08-19 [1] CRAN (R 4.4.0)
ragg 1.3.2 2024-05-15 [1] CRAN (R 4.4.0)
raster * 3.6-26 2023-10-14 [1] CRAN (R 4.4.0)
rbibutils 2.2.16 2023-10-25 [1] CRAN (R 4.4.0)
Rcpp 1.0.12 2024-01-09 [1] CRAN (R 4.4.0)
Rdpack 2.6 2023-11-08 [1] CRAN (R 4.4.0)
readr * 2.1.5 2024-01-10 [1] CRAN (R 4.4.0)
remotes 2.5.0 2024-03-17 [1] CRAN (R 4.4.0)
rlang 1.1.4 2024-06-04 [1] CRAN (R 4.4.0)
rmarkdown 2.26 2024-03-05 [1] CRAN (R 4.4.0)
robustbase 0.99-2 2024-01-27 [1] CRAN (R 4.4.0)
rprojroot 2.0.4 2023-11-05 [1] CRAN (R 4.4.0)
RSpectra 0.16-1 2022-04-24 [1] CRAN (R 4.4.0)
rstudioapi 0.16.0 2024-03-24 [1] CRAN (R 4.4.0)
sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.4.0)
sf 1.0-16 2024-03-24 [1] CRAN (R 4.4.0)
shiny 1.8.1.1 2024-04-02 [1] CRAN (R 4.4.0)
sp * 2.1-4 2024-04-30 [1] CRAN (R 4.4.0)
stringi 1.8.4 2024-05-06 [1] CRAN (R 4.4.0)
stringr 1.5.1 2023-11-14 [1] CRAN (R 4.4.0)
survival 3.7-0 2024-06-05 [1] CRAN (R 4.4.2)
systemfonts 1.1.0 2024-05-15 [1] CRAN (R 4.4.0)
terra 1.7-78 2024-05-22 [1] CRAN (R 4.4.0)
textshaping 0.4.0 2024-05-24 [1] CRAN (R 4.4.0)
tibble 3.2.1 2023-03-20 [1] CRAN (R 4.4.0)
tidyr * 1.3.1 2024-01-24 [1] CRAN (R 4.4.0)
tidyselect 1.2.1 2024-03-11 [1] CRAN (R 4.4.0)
timechange 0.3.0 2024-01-18 [1] CRAN (R 4.4.0)
tzdb 0.4.0 2023-05-12 [1] CRAN (R 4.4.0)
units 0.8-5 2023-11-28 [1] CRAN (R 4.4.0)
urlchecker 1.0.1 2021-11-30 [1] CRAN (R 4.4.0)
usethis 2.2.3 2024-02-19 [1] CRAN (R 4.4.0)
utf8 1.2.4 2023-10-22 [1] CRAN (R 4.4.0)
vctrs 0.6.5 2023-12-01 [1] CRAN (R 4.4.0)
withr 3.0.0 2024-01-16 [1] CRAN (R 4.4.0)
xfun 0.49 2024-10-31 [1] CRAN (R 4.4.1)
xml2 1.3.6 2023-12-04 [1] CRAN (R 4.4.0)
xtable 1.8-4 2019-04-21 [1] CRAN (R 4.4.0)
yaml 2.3.8 2023-12-11 [1] CRAN (R 4.4.0)
[1] /Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/library
──────────────────────────────────────────────────────────────────────────────